tg-me.com/BookPython/3697
Create:
Last Update:
Last Update:
Иногда нужно выполнить блок кода с несколькими менеджерами контекста:
with open('f') as f:
with open('g') as g:
with open('h') as h:
pass
Начиная с Python 2.7 и 3.1, это можно записать в одной конструкции
with
:
o = open
with o('f') as f, o('g') as g, o('h') as h:
pass
Раньше для этого использовали функцию
contextlib.nested
:
with nested(o('f'), o('g'), o('h')) as (f, g, h):
pass
Если же число менеджеров контекста заранее неизвестно, лучше подойдёт более продвинутый инструмент.
contextlib.ExitStack
позволяет открывать любое число контекстов в произвольный момент, но гарантирует корректный выход из них в конце:
with ExitStack() as stack:
f = stack.enter_context(o('f'))
g = stack.enter_context(o('g'))
other = [
stack.enter_context(o(filename))
for filename in filenames
]
👉@BookPython
BY Библиотека Python разработчика | Книги по питону
Warning: Undefined variable $i in /var/www/tg-me/post.php on line 283
Share with your friend now:
tg-me.com/BookPython/3697